﻿using System;
using System.Threading;
using System.Threading.Tasks;

namespace _057_为每个线程单独分配变量值
{
    class Program
    {
        static ThreadLocal<int> 我的声明静态 = new ThreadLocal<int>(true);
        static void Main(string[] args)
        {
            Thread i线程1 = new Thread(() =>
              {
                  我的声明静态.Value = 5000;
                  Console.WriteLine($"在ID为{Thread.CurrentThread.ManagedThreadId}的线程，本地线程变量的值为：{我的声明静态.Value}");
              });
            i线程1.Start();

            Thread 线程2 = new Thread(() => {
                我的声明静态.Value = 9000;
                Console.WriteLine($"在{Thread.CurrentThread.ManagedThreadId}的线程，本地线程变量的值 为：{我的声明静态.Value}");
                });
            线程2.Start();

            
            Thread 线程3 = new Thread(() => {
                我的声明静态.Value = 7500;
                Console.WriteLine($"在{Thread.CurrentThread.ManagedThreadId}的线程，本地线程变量的值 为：{我的声明静态.Value}");
                });
            线程3.Start();


            i线程1.Join();
            线程2.Join();
            线程3.Join();

            Console.WriteLine("\n设置过的所有值 ：");
            foreach (var n in 我的声明静态.Values)
            {
                Console.WriteLine(" {0}", n);
            }



        }

    }
}
